//
//  SharedFolder.m
//  My Dream Slapper
//
//  Created by Jason Harris on 8/26/06.
//  Copyright (c) 2006, Jason Harris and Geekspiff
//  All rights reserved.
//  
//  Redistribution and use in source and binary forms, with or without modification, are permitted provided
//  that the following conditions are met:
//  
//  Redistributions of source code must retain the above copyright notice, this list of conditions and the
//  following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list
//  of conditions and the following disclaimer in the documentation and/or other materials provided with the
//  distribution. Neither the name of Jason Harris, Geekspiff, nor the names of its contributors may be used
//  to endorse or promote products derived from this software without specific prior written permission.
//  
//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
//  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
//  PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
//  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
//  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
//  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
//  POSSIBILITY OF SUCH DAMAGE.
//

#import "SharedFolder.h"


@implementation SharedFolder

- (NSString *)defaultName
{  return NSLocalizedString(@"DefaultSharedFolderName", nil);  }


- (void)setName: (NSString *)name
{
	[self willChangeValueForKey: @"name"];
	[self setPrimitiveValue: name forKey: @"name"];
	[self didChangeValueForKey: @"name"];

	[self setValue: [NSNumber numberWithBool: YES] forKey: @"needsSync"];
}


- (void)setNeedsSync: (NSNumber *)needsSync
{
	[self willChangeValueForKey: @"needsSync"];
	[self setPrimitiveValue: needsSync forKey: @"needsSync"];
	[self didChangeValueForKey: @"needsSync"];

	if (needsSync && [needsSync boolValue])
		[[self managedObjectContext] markObjectAsDirty: self];
}


- (void)setEntries: (id)entries
{
	[self willChangeValueForKey: @"entries"];
	[self setPrimitiveValue: entries forKey: @"entries"];
	[self didChangeValueForKey: @"entries"];
	
	[[self managedObjectContext] markObjectAsDirty: self];
}


- (void)addEntriesObject: (NSManagedObject *)object
{
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&object count:1];
    [self willChangeValueForKey:@"entries" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey: @"entries"] addObject: object];
    [self didChangeValueForKey:@"entries" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects];
    [changedObjects release];
	
	[[self managedObjectContext] markObjectAsDirty: self];
}


- (void)removeEntriesObject: (id)object
{
    NSSet *changedObjects = [[NSSet alloc] initWithObjects:&object count:1];
    [self willChangeValueForKey:@"entries" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
    [[self primitiveValueForKey: @"entries"] removeObject: object];
    [self didChangeValueForKey:@"entries" withSetMutation:NSKeyValueMinusSetMutation usingObjects:changedObjects];
    [changedObjects release];
	
	[[self managedObjectContext] markObjectAsDirty: self];
}

@end
